package principal;

import java.awt.Dimension;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JOptionPane;
import javax.swing.JPanel;


public class ComprobarPartida  extends Thread {
	
	private ControladorPartida motor;
	private boolean total = true;
	private boolean bucle = true;
	private int grados = 0;
	private int error = 0;
	
	/**  comprueba partida total, o parcial
	 * @param ms
	 */
	public ComprobarPartida(ControladorPartida ms) {
		motor = ms;
		compruebaErrores();
		motor.panelApuntes.pintaFinalPartida(error);		
		start();
	}
	
	public void run() {
		animacion();
	}
	
	
	private void animacion() {
		System.out.println("Paso a comprobar la partida............");
		motor.panelSudoku.verTodos(true);
		Dimension x = new Dimension();
		boolean dir = true;
		while (bucle) {
			try {
				x = calculaCoordenadas();
				motor.panelNumEntrados.muestraTodosLosNumeros(x);	
				motor.panelNumEntrados.repaint();
				this.sleep(100);
/*				if (dir) x.width+=4;
				else x.width-=4;
				if (x.width>16) dir= false;
				if (x.width<-16) dir= true;*/
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
				///espaciar tiempo
//				tiempo = System.currentTimeMillis();				
//				while (System.currentTimeMillis()<tiempo+1000) {
//				}
		}
	}

	private Dimension calculaCoordenadas() {
		Dimension d = new Dimension();
		grados += 10;
		if (grados>350) grados = 0;
		double rad = Math.toRadians(grados);
		d.width = (int) (15*Math.sin(rad));
		d.height = (int) (15*Math.cos(rad));
		return d;
	}
	
	public void pararAnimacion() {
		bucle = false;
	}
	
	public int getError() {
		return error;
	}
	
	/**
	 * comprobar los errores de la partida finalizada
	 */
	private void compruebaErrores() {
		for (int y=0;y<9; y++)
			for (int x=0;x<9; x++) {
				//   compara solo las casillas NO visibles
				if (!motor.sudoku[y][x].visible) {
					if ((motor.sudoku[y][x].valor != motor.sudoku[y][x].apunte) 
							& motor.sudoku[y][x].apunte>0) {
						motor.sudoku[y][x].error = true;
						error++;
					}
				}
			}
		}

	}
